我正在使用JLine 2(v2.13)和Socket IO为我的应用程序创建一个管理控制台,可以通过普通的telnet客户端访问.但是我发现打印出换行符时会打印出奇怪的符号:
act.app.restart restart app^Jact.job.list List jobs
正确的输出应该是:
act.app.restart restart app act.job.list List jobs
我追溯到代码,发现以下代码行导致了麻烦:
另一个奇怪的事情是当我按下向上箭头来获取历史记录时,控制台打印出来^[[A
并且没有其他任何事情发生.
有谁有想法吗?
更新:添加了相关的源代码
接受传入telnet连接的代码:
创建ConsoleReader
和分派命令的代码:
更新2
对不起,我已经消失了一段时间.刚回来,因为我的项目让我呼吸新鲜空气.所以这就是发生的事情:我创建了一个PrintWriter
并将其用作^J
问题的解决方法:
但是,jline2
与telnet会话一起使用时还有许多其他问题:
键入
显示选项卡而不是激活完整列表.但是,在我按下回车键后,它会给我一个完整的列表以及一条错误消息:
键入
箭头,显示^[[A
,按回车键,它将执行我的最后一个命令.但是我丢失了命令行编辑
问题仍然存在,我相信应该有办法解决它只需要一些指导......